#include "phono.h"
#include "ui_phono.h"




Phono::Phono(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Phono)
{
    ui->setupUi(this);


}

Phono::~Phono()
{
    delete ui;



//    ret::connect(sock_fd,(struct sockaddr *)&srvaddr,sizeof(srvaddr));

    //4.  关闭套接字 关闭设备文件
    ::close(fd);  //::访问全局close函数，非本类close函数
    ::close(sock_fd);
    ::close(ret);


}
//返回上一个页面
void Phono::on_pushButton_2_clicked()
{
    //因为在跳转时，记录了上一个界面
    //所以可以利用此函数获取当前窗口的父窗口对象指针
    QWidget *parent = this->parentWidget();
    parent->show();//把之前父界面的隐藏状态改为显示状态，显示父界面
    this->close();//关闭当前界面
    //销毁子界面
    delete this;
}

//语音
void Phono::on_pushButton_clicked()
{

    //语音
    printf("开始录音\n");
    system("arecord -d5 -c1 -r16000 -twav -fS16_LE 1.wav");
    //创建套接字
    sock_fd = socket(PF_INET,SOCK_STREAM,0);
    printf("aaa\n");
    //绑定地址(IP+PORT)
    struct sockaddr_in srvaddr;
    srvaddr.sin_family = PF_INET;
    //端口
    srvaddr.sin_port = htons(55555);
    //IP地址
    srvaddr.sin_addr.s_addr = inet_addr("192.168.2.20");
    printf("002\n");
    //发起连接请求
    ret = ::connect(sock_fd,(struct sockaddr *)&srvaddr,sizeof(srvaddr));
    printf("003\n");
    fd = open("1.wav",O_RDWR);
    if(fd < 0)
    {
        perror("open() failed");
        return;
    }
    //获取文件总字节数
    int file_size = lseek(fd,0,SEEK_END);
    //将文件光标偏移到文件开头
    lseek(fd,0,SEEK_SET);
    send(sock_fd,&file_size,4,0);
    printf("file_size = %d\n",file_size);
    printf("004\n");
    char buf[1024] = {0};
    int ret_rd;
    while(1)
    {
        bzero(buf,1024);
        ret_rd = read(fd,buf,1024);
        printf("ret_rd = %d\n",ret_rd);
        if(ret_rd == 0)	//发送完毕
        {
            printf("发送完毕\n");
            break;
        }
        send(sock_fd,buf,ret_rd,0);
        if(ret_rd < 1024)
        {
            printf("send over\n");
            break;
        }
    }
    printf("005\n");
    bzero(buf,100);
    printf("等待接收数据\n");
    recv(sock_fd,buf,100,0);
    if(strstr(buf,"相册") != NULL)  //匹配相册成功
    {
        //play_photo();
        printf("play photo\n");
        //第一步：创建另一个界面的对象  new MainWindow(this) 把父窗口传递过去，记录从哪一个界面跳转
        Photo *msg = new Photo(this);
        msg->setAttribute(Qt::WA_DeleteOnClose);//关闭之后自动销毁对象
        //第二步：显示要跳转的界面
        msg->show();
        //第三步：隐藏当前的界面,跳转到另一个界面之后，点击返回按钮还可以返回当前界面
        this->hide();
    }
    if(strstr(buf,"报警") != NULL)  //匹配音乐成功
    {
        //play_music();
        printf("play 404\n");
        //第一步：创建另一个界面的对象  new MainWindow(this) 把父窗口传递过去，记录从哪一个界面跳转
        Police *msg = new Police(this);
        msg->setAttribute(Qt::WA_DeleteOnClose);//关闭之后自动销毁对象
        //第二步：显示要跳转的界面
        msg->show();
        //第三步：隐藏当前的界面,跳转到另一个界面之后，点击返回按钮还可以返回当前界面
        this->hide();
    }
    if(strstr(buf,"相机") != NULL)  //匹配视频成功
    {
        //play_video();
        printf("play 相机\n");
        //第一步：创建另一个界面的对象  new MainWindow(this) 把父窗口传递过去，记录从哪一个界面跳转
        camera2 *msg = new camera2(this);
    //    Camera *msg = new Camera(this);
        msg->setAttribute(Qt::WA_DeleteOnClose);//关闭之后自动销毁对象
        //第二步：显示要跳转的界面
        msg->show();
        //第三步：隐藏当前的界面,跳转到另一个界面之后，点击返回按钮还可以返回当前界面
        this->hide();
    }
    if(strstr(buf,"灯") != NULL)
    {
        printf("没有识别结果");
        //第一步：创建另一个界面的对象  new MainWindow(this) 把父窗口传递过去，记录从哪一个界面跳转
        Lamp *msg = new Lamp(this);
        msg->setAttribute(Qt::WA_DeleteOnClose);//关闭之后自动销毁对象
        //第二步：显示要跳转的界面
        msg->show();
        //第三步：隐藏当前的界面,跳转到另一个界面之后，点击返回按钮还可以返回当前界面
        this->hide();
    }
    if(strstr(buf,"没有识别结果") != NULL)
    {
        printf("没有识别结果");
    }
    printf("006\n");
}
